今天看代码,发现有的 if else语句后面没有花括号 {}
final void lock(){
if(compareAndSetState(0,1))
setExclusiveOwnerThread(Thread.currentThread());
else
acquire(1);
}
下面谈一下,加不加 花括号 {} 的 区别和影响
1 只有一对 if else 时,后面不加{},就近原则,只控制第一句
- 不加 {}
if (1==2)
x=1;y=2;z=3;
编译后
if (1==2)
{x=1};y=2;z=3;
当1!=2时,y=2;z=3;仍执行
- 加{}
if (1 == 2)
{ x=1;y=2;z=3;}
当1!=2时,都不执行
- 总结
后面不加{}时,就近原则,只控制第一句
2 多个 if else时,if else按照就近匹配的原则进行匹配,这时候,不加{},很容易出错
实际想要的效果
if(Character.isLowerCase(c)){
if(count[c-'a']==1)
return i;
}
else{
if(count[c-'A'+26]==1)
return i;
}
如果不加 {},实际行 else匹配的是第二个 if,程序出错
if(Character.isLowerCase(c))
if(count[c-'a']==1)
return i;
else
if(count[c-'A'+26]==1)
return i;
3 总结
if … else… 能够不加 {} 的情况
- 只有一对 if else语句
- if else 后面只跟着一个判断语句
为了防止出错,建议代码规范化,if else 都加上 {}